home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / FREENET / BRODIE / BETA / DNSRESOL.ARC / Programmer / Static / h / DNSResolve
Text File  |  1997-04-09  |  21KB  |  646 lines

  1. #ifndef dnsresolver_H
  2. #define dnsresolver_H
  3.  
  4. /* C header file for DNSResolver
  5.  * written by DefMod (Sep 22 1995) on Wed Apr  9 11:57:02 1997
  6.  * Stewart Brodie
  7.  */
  8.  
  9. #ifndef types_H
  10. #include "types.h"
  11. #endif
  12.  
  13. /**********************************
  14.  * SWI names and SWI reason codes *
  15.  **********************************/
  16. #undef  DNSResolver_GetHostByName
  17. #define DNSResolver_GetHostByName               0x46000
  18. #undef  XDNSResolver_GetHostByName
  19. #define XDNSResolver_GetHostByName              0x66000
  20. #undef  DNSResolver_GetHostByAddr
  21. #define DNSResolver_GetHostByAddr               0x46001
  22. #undef  XDNSResolver_GetHostByAddr
  23. #define XDNSResolver_GetHostByAddr              0x66001
  24. #undef  DNSResolver_GetCache
  25. #define DNSResolver_GetCache                    0x46002
  26. #undef  XDNSResolver_GetCache
  27. #define XDNSResolver_GetCache                   0x66002
  28. #undef  DNSResolver_CacheControl
  29. #define DNSResolver_CacheControl                0x46003
  30. #undef  XDNSResolver_CacheControl
  31. #define XDNSResolver_CacheControl               0x66003
  32. #undef  DNSResolver_Start
  33. #define DNSResolver_Start                       0x46010
  34. #undef  XDNSResolver_Start
  35. #define XDNSResolver_Start                      0x66010
  36. #undef  DNSResolver_Check
  37. #define DNSResolver_Check                       0x46011
  38. #undef  XDNSResolver_Check
  39. #define XDNSResolver_Check                      0x66011
  40. #undef  DNSResolver_Dispose
  41. #define DNSResolver_Dispose                     0x46012
  42. #undef  XDNSResolver_Dispose
  43. #define XDNSResolver_Dispose                    0x66012
  44. #undef  DNSResolver_GetAnswer
  45. #define DNSResolver_GetAnswer                   0x46013
  46. #undef  XDNSResolver_GetAnswer
  47. #define XDNSResolver_GetAnswer                  0x66013
  48. #undef  DNSResolver_GetAnswerRaw
  49. #define DNSResolver_GetAnswerRaw                0x46014
  50. #undef  XDNSResolver_GetAnswerRaw
  51. #define XDNSResolver_GetAnswerRaw               0x66014
  52. #undef  DNSResolver_GetMXQueryAnswer
  53. #define DNSResolver_GetMXQueryAnswer            0x46015
  54. #undef  XDNSResolver_GetMXQueryAnswer
  55. #define XDNSResolver_GetMXQueryAnswer           0x66015
  56. #undef  DNSResolver_GetNSQueryAnswer
  57. #define DNSResolver_GetNSQueryAnswer            0x46016
  58. #undef  XDNSResolver_GetNSQueryAnswer
  59. #define XDNSResolver_GetNSQueryAnswer           0x66016
  60. #undef  DNSResolver_GetSOAQueryAnswer
  61. #define DNSResolver_GetSOAQueryAnswer           0x46017
  62. #undef  XDNSResolver_GetSOAQueryAnswer
  63. #define XDNSResolver_GetSOAQueryAnswer          0x66017
  64. #undef  DNSResolver_MTGetHostByName
  65. #define DNSResolver_MTGetHostByName             0x46018
  66. #undef  XDNSResolver_MTGetHostByName
  67. #define XDNSResolver_MTGetHostByName            0x66018
  68. #undef  DNSResolver_MTGetHostByAddr
  69. #define DNSResolver_MTGetHostByAddr             0x46019
  70. #undef  XDNSResolver_MTGetHostByAddr
  71. #define XDNSResolver_MTGetHostByAddr            0x66019
  72. #undef  DNSResolver_ResStatus
  73. #define DNSResolver_ResStatus                   0x4601A
  74. #undef  XDNSResolver_ResStatus
  75. #define XDNSResolver_ResStatus                  0x6601A
  76. #undef  DNSResolver_ResDebug
  77. #define DNSResolver_ResDebug                    0x4601B
  78. #undef  XDNSResolver_ResDebug
  79. #define XDNSResolver_ResDebug                   0x6601B
  80. #undef  DNSResolver_ResUseVC
  81. #define DNSResolver_ResUseVC                    0x4601C
  82. #undef  XDNSResolver_ResUseVC
  83. #define XDNSResolver_ResUseVC                   0x6601C
  84. #undef  DNSResolver_Version
  85. #define DNSResolver_Version                     0x4601D
  86. #undef  XDNSResolver_Version
  87. #define XDNSResolver_Version                    0x6601D
  88. #undef  DNSResolver_ShowAnswer
  89. #define DNSResolver_ShowAnswer                  0x4601E
  90. #undef  XDNSResolver_ShowAnswer
  91. #define XDNSResolver_ShowAnswer                 0x6601E
  92. #undef  DNSResolver_DnComp
  93. #define DNSResolver_DnComp                      0x4601F
  94. #undef  XDNSResolver_DnComp
  95. #define XDNSResolver_DnComp                     0x6601F
  96. #undef  DNSResolver_DnExpand
  97. #define DNSResolver_DnExpand                    0x46020
  98. #undef  XDNSResolver_DnExpand
  99. #define XDNSResolver_DnExpand                   0x66020
  100. #undef  DNSResolver_GetHostName
  101. #define DNSResolver_GetHostName                 0x46021
  102. #undef  XDNSResolver_GetHostName
  103. #define XDNSResolver_GetHostName                0x66021
  104. #undef  DNSResolver_ResQuery
  105. #define DNSResolver_ResQuery                    0x46022
  106. #undef  XDNSResolver_ResQuery
  107. #define XDNSResolver_ResQuery                   0x66022
  108. #undef  DNSResolver_NameServers
  109. #define DNSResolver_NameServers                 0x46023
  110. #undef  XDNSResolver_NameServers
  111. #define XDNSResolver_NameServers                0x66023
  112. #undef  DNSResolver_CacheFlush
  113. #define DNSResolver_CacheFlush                  0x46024
  114. #undef  XDNSResolver_CacheFlush
  115. #define XDNSResolver_CacheFlush                 0x66024
  116. #undef  DNSResolver_GetError
  117. #define DNSResolver_GetError                    0x46025
  118. #undef  XDNSResolver_GetError
  119. #define XDNSResolver_GetError                   0x66025
  120.  
  121. /************************
  122.  * Constant definitions *
  123.  ************************/
  124. #define error_DNS_RESOLVER__UNKNOWN_SWI         0x802D20u
  125.  
  126. /*************************
  127.  * Function declarations *
  128.  *************************/
  129.  
  130. #ifdef __cplusplus
  131.    extern "C" {
  132. #endif
  133.  
  134. /* ------------------------------------------------------------------------
  135.  * Function:      dnsresolver_get_host_by_name()
  136.  *
  137.  * Description:   Looks up the host information as for gethostbyname(3)
  138.  *
  139.  * Input:         hostname - value of R1 on entry
  140.  *
  141.  * Output:        host - pointer to static hostent structure (X version only)
  142.  *
  143.  * Returns:       R1 (non-X version only)
  144.  *
  145.  * Other notes:   Calls SWI 0x46000 with R0 = 0x0.
  146.  */
  147.  
  148. extern os_error *xdnsresolver_get_host_by_name (char const *hostname,
  149.       hostent **host);
  150. extern hostent *dnsresolver_get_host_by_name (char const *hostname);
  151.  
  152. /* ------------------------------------------------------------------------
  153.  * Function:      dnsresolver_get_host_by_addr()
  154.  *
  155.  * Description:   Looks up the host information as for gethostbyaddr(3)
  156.  *
  157.  * Input:         address - Pointer to host IP address
  158.  *                address_size - should be sizeof(struct in_addr) = 4
  159.  *                address_type - should be AF_INET (2)
  160.  *
  161.  * Output:        host - pointer to static hostent structure (X version only)
  162.  *
  163.  * Returns:       R1 (non-X version only)
  164.  *
  165.  * Other notes:   Calls SWI 0x46001 with R0 = 0x0.
  166.  */
  167.  
  168. extern os_error *xdnsresolver_get_host_by_addr (byte const *address,
  169.       int address_size,
  170.       int address_type,
  171.       hostent **host);
  172. extern hostent *dnsresolver_get_host_by_addr (byte const *address,
  173.       int address_size,
  174.       int address_type);
  175.  
  176. /* ------------------------------------------------------------------------
  177.  * Function:      dnsresolver_get_cache()
  178.  *
  179.  * Description:   Reserved for ANT Limited. Not implemented in DNSResolver
  180.  *
  181.  * Other notes:   Calls SWI 0x46002.
  182.  */
  183.  
  184. extern os_error *xdnsresolver_get_cache (void);
  185. extern void dnsresolver_get_cache (void);
  186.  
  187. /* ------------------------------------------------------------------------
  188.  * Function:      dnsresolver_cache_control()
  189.  *
  190.  * Description:   Reserved for ANT Limited. Not implemented in DNSResolver
  191.  *
  192.  * Other notes:   Calls SWI 0x46003.
  193.  */
  194.  
  195. extern os_error *xdnsresolver_cache_control (void);
  196. extern void dnsresolver_cache_control (void);
  197.  
  198. /* ------------------------------------------------------------------------
  199.  * Function:      dnsresolver_start()
  200.  *
  201.  * Description:   Starts a multitasking DNS query
  202.  *
  203.  * Input:         address - Pointer to entity to lookup
  204.  *                address_class - should be C_IN (1)
  205.  *                lookup_type - as found in arpa/nameser.h
  206.  *
  207.  * Output:        query - DNS query handle (X version only)
  208.  *
  209.  * Returns:       R0 (non-X version only)
  210.  *
  211.  * Other notes:   Calls SWI 0x46010.
  212.  */
  213.  
  214. extern os_error *xdnsresolver_start (char const *address,
  215.       int address_class,
  216.       int lookup_type,
  217.       dnsquery **query);
  218. extern dnsquery *dnsresolver_start (char const *address,
  219.       int address_class,
  220.       int lookup_type);
  221.  
  222. /* ------------------------------------------------------------------------
  223.  * Function:      dnsresolver_check()
  224.  *
  225.  * Description:   Checks the progress of a multitasking DNS query
  226.  *
  227.  * Input:         query - DNS query handle
  228.  *
  229.  * Output:        status - value of R0 on exit (X version only)
  230.  *
  231.  * Returns:       R0 (non-X version only)
  232.  *
  233.  * Other notes:   Calls SWI 0x46011.
  234.  */
  235.  
  236. extern os_error *xdnsresolver_check (dnsquery *query,
  237.       dns_status *status);
  238. extern dns_status dnsresolver_check (dnsquery *query);
  239.  
  240. /* ------------------------------------------------------------------------
  241.  * Function:      dnsresolver_dispose()
  242.  *
  243.  * Description:   Terminates & disposes of a multitasking DNS query
  244.  *
  245.  * Input:         query - handle 
  246.  *
  247.  * Other notes:   Calls SWI 0x46012.
  248.  */
  249.  
  250. extern os_error *xdnsresolver_dispose (dnsquery *query);
  251. extern void dnsresolver_dispose (dnsquery *query);
  252.  
  253. /* ------------------------------------------------------------------------
  254.  * Function:      dnsresolver_get_answer()
  255.  *
  256.  * Description:   Retrieves the DNS answer as a hostent structure if
  257.  *                available
  258.  *
  259.  * Input:         query - DNS query handle
  260.  *
  261.  * Output:        host - pointer to static hostent structure (X version only)
  262.  *
  263.  * Returns:       R0 (non-X version only)
  264.  *
  265.  * Other notes:   Calls SWI 0x46013.
  266.  */
  267.  
  268. extern os_error *xdnsresolver_get_answer (dnsquery *query,
  269.       hostent **host);
  270. extern hostent *dnsresolver_get_answer (dnsquery *query);
  271.  
  272. /* ------------------------------------------------------------------------
  273.  * Function:      dnsresolver_get_answer_raw()
  274.  *
  275.  * Description:   Retrieves the complete unparsed DNS answer if available
  276.  *
  277.  * Input:         query - DNS query handle
  278.  *
  279.  * Output:        result - Opaque DNS response packet (X version only)
  280.  *                resplen - value of R1 on exit
  281.  *
  282.  * Returns:       R0 (non-X version only)
  283.  *
  284.  * Other notes:   Calls SWI 0x46014.
  285.  */
  286.  
  287. extern os_error *xdnsresolver_get_answer_raw (dnsquery *query,
  288.       byte **result,
  289.       int *resplen);
  290. extern byte *dnsresolver_get_answer_raw (dnsquery *query,
  291.       int *resplen);
  292.  
  293. /* ------------------------------------------------------------------------
  294.  * Function:      dnsresolver_get_mx_query_answer()
  295.  *
  296.  * Description:   Retrieves the DNS answer as a dnsquery_mx structure if
  297.  *                available
  298.  *
  299.  * Input:         query - DNS MX query handle
  300.  *
  301.  * Output:        host - pointer to static dnsquery_mx structure (X version only)
  302.  *                mxcount - number of entries in array
  303.  *
  304.  * Returns:       R0 (non-X version only)
  305.  *
  306.  * Other notes:   Calls SWI 0x46015.
  307.  */
  308.  
  309. extern os_error *xdnsresolver_get_mx_query_answer (dnsquery *query,
  310.       dnsquery_mx **host,
  311.       int *mxcount);
  312. extern dnsquery_mx *dnsresolver_get_mx_query_answer (dnsquery *query,
  313.       int *mxcount);
  314.  
  315. /* ------------------------------------------------------------------------
  316.  * Function:      dnsresolver_get_ns_query_answer()
  317.  *
  318.  * Description:   Retrieves the DNS answer as a dnsquery_ns structure if
  319.  *                available
  320.  *
  321.  * Input:         query - DNS NS query handle
  322.  *
  323.  * Output:        host - pointer to static dnsquery_ns structure (X version only)
  324.  *                nscount - number of entries in array
  325.  *
  326.  * Returns:       R0 (non-X version only)
  327.  *
  328.  * Other notes:   Calls SWI 0x46016.
  329.  */
  330.  
  331. extern os_error *xdnsresolver_get_ns_query_answer (dnsquery *query,
  332.       dnsquery_ns **host,
  333.       int *nscount);
  334. extern dnsquery_ns *dnsresolver_get_ns_query_answer (dnsquery *query,
  335.       int *nscount);
  336.  
  337. /* ------------------------------------------------------------------------
  338.  * Function:      dnsresolver_get_soa_query_answer()
  339.  *
  340.  * Description:   Retrieves the DNS answer as a dnsquery_soa structure if
  341.  *                available
  342.  *
  343.  * Input:         query - DNS SOA query handle
  344.  *
  345.  * Output:        host - pointer to static dnsquery_soa structure (X version only)
  346.  *                soacount - number of entries in array
  347.  *
  348.  * Returns:       R0 (non-X version only)
  349.  *
  350.  * Other notes:   Calls SWI 0x46017.
  351.  */
  352.  
  353. extern os_error *xdnsresolver_get_soa_query_answer (dnsquery *query,
  354.       dnsquery_soa **host,
  355.       int *soacount);
  356. extern dnsquery_soa *dnsresolver_get_soa_query_answer (dnsquery *query,
  357.       int *soacount);
  358.  
  359. /* ------------------------------------------------------------------------
  360.  * Function:      dnsresolver_mt_get_host_by_name()
  361.  *
  362.  * Description:   Starts a multitasking gethostbyname() query. Equivalent
  363.  *                to dnsresolver_start_query(hostname, C_IN, T_A)
  364.  *
  365.  * Input:         hostname - value of R0 on entry
  366.  *
  367.  * Output:        query - DNS query handle (X version only)
  368.  *
  369.  * Returns:       R0 (non-X version only)
  370.  *
  371.  * Other notes:   Calls SWI 0x46018.
  372.  */
  373.  
  374. extern os_error *xdnsresolver_mt_get_host_by_name (char const *hostname,
  375.       dnsquery **query);
  376. extern dnsquery *dnsresolver_mt_get_host_by_name (char const *hostname);
  377.  
  378. /* ------------------------------------------------------------------------
  379.  * Function:      dnsresolver_mt_get_host_by_addr()
  380.  *
  381.  * Description:   Starts a multitasking gethostbyaddr() query. Equivalent
  382.  *                to dnsresolver_start_query(<<address>>.in-addr.arpa,
  383.  *                C_IN, T_PTR)
  384.  *
  385.  * Input:         address - Pointer to host IP address
  386.  *                address_size - should be sizeof(struct in_addr) = 4
  387.  *                address_type - should be AF_INET (2)
  388.  *
  389.  * Output:        query - DNS query handle (X version only)
  390.  *
  391.  * Returns:       R0 (non-X version only)
  392.  *
  393.  * Other notes:   Calls SWI 0x46019.
  394.  */
  395.  
  396. extern os_error *xdnsresolver_mt_get_host_by_addr (byte const *address,
  397.       int address_size,
  398.       int address_type,
  399.       dnsquery **query);
  400. extern dnsquery *dnsresolver_mt_get_host_by_addr (byte const *address,
  401.       int address_size,
  402.       int address_type);
  403.  
  404. /* ------------------------------------------------------------------------
  405.  * Function:      dnsresolver_res_status()
  406.  *
  407.  * Description:   Prints the current options status
  408.  *
  409.  * Other notes:   Calls SWI 0x4601A.
  410.  */
  411.  
  412. extern os_error *xdnsresolver_res_status (void);
  413. extern void dnsresolver_res_status (void);
  414.  
  415. /* ------------------------------------------------------------------------
  416.  * Function:      dnsresolver_res_debug()
  417.  *
  418.  * Description:   Toggles the debug state of the resolver
  419.  *
  420.  * Other notes:   Calls SWI 0x4601B.
  421.  */
  422.  
  423. extern os_error *xdnsresolver_res_debug (void);
  424. extern void dnsresolver_res_debug (void);
  425.  
  426. /* ------------------------------------------------------------------------
  427.  * Function:      dnsresolver_res_use_vc()
  428.  *
  429.  * Description:   Toggles the Virtual Circuit flag in the resolver
  430.  *
  431.  * Other notes:   Calls SWI 0x4601C.
  432.  */
  433.  
  434. extern os_error *xdnsresolver_res_use_vc (void);
  435. extern void dnsresolver_res_use_vc (void);
  436.  
  437. /* ------------------------------------------------------------------------
  438.  * Function:      dnsresolver_version()
  439.  *
  440.  * Description:   Returns the BIND version upon which the resolver is based
  441.  *
  442.  * Output:        version - BCD encoded version number (currently 04090500) (X version only)
  443.  *
  444.  * Returns:       R0 (non-X version only)
  445.  *
  446.  * Other notes:   Calls SWI 0x4601D.
  447.  */
  448.  
  449. extern os_error *xdnsresolver_version (int *version);
  450. extern int dnsresolver_version (void);
  451.  
  452. /* ------------------------------------------------------------------------
  453.  * Function:      dnsresolver_show_answer()
  454.  *
  455.  * Description:   Decodes a DNS response into a text buffer
  456.  *
  457.  * Input:         response - DNS response
  458.  *                buffer - Buffer to hold results
  459.  *                size - Buffer size on entry, amount left free on exit
  460.  *                anslen - Length of DNS response
  461.  *
  462.  * Output:        status - -1 for failure, 0 for success (X version only)
  463.  *
  464.  * Returns:       R0 (non-X version only)
  465.  *
  466.  * Other notes:   Calls SWI 0x4601E.
  467.  */
  468.  
  469. extern os_error *xdnsresolver_show_answer (byte const *response,
  470.       char *buffer,
  471.       int *size,
  472.       int anslen,
  473.       int *status);
  474. extern int dnsresolver_show_answer (byte const *response,
  475.       char *buffer,
  476.       int *size,
  477.       int anslen);
  478.  
  479. /* ------------------------------------------------------------------------
  480.  * Function:      dnsresolver_dn_comp()
  481.  *
  482.  * Description:   Compresses a domain name into a buffer
  483.  *
  484.  * Input:         exp_dn - expanded domain name
  485.  *                comp_dn - buffer for compressed domain name
  486.  *                dn_ptrs - list of pointers to previously compressed names
  487.  *                lastdnptr - pointer to last entry in dn_ptrs
  488.  *                length - size of comp_dn buffer
  489.  *
  490.  * Output:        status - -1 for failure, size of *compressed* name otherwise (X version only)
  491.  *
  492.  * Returns:       R0 (non-X version only)
  493.  *
  494.  * Other notes:   Calls SWI 0x4601F.
  495.  */
  496.  
  497. extern os_error *xdnsresolver_dn_comp (char const *exp_dn,
  498.       char *comp_dn,
  499.       char **dn_ptrs,
  500.       char **lastdnptr,
  501.       int length,
  502.       int *status);
  503. extern int dnsresolver_dn_comp (char const *exp_dn,
  504.       char *comp_dn,
  505.       char **dn_ptrs,
  506.       char **lastdnptr,
  507.       int length);
  508.  
  509. /* ------------------------------------------------------------------------
  510.  * Function:      dnsresolver_dn_expand()
  511.  *
  512.  * Description:   Expands a compressed domain name into a buffer
  513.  *
  514.  * Input:         msg - pointer to beginning of DNS buffer
  515.  *                eomsg - pointer to first location after msg
  516.  *                comp_dn - compressed domain name
  517.  *                exp_dn - buffer for expanded domain name
  518.  *                length - size of exp_dn buffer
  519.  *
  520.  * Output:        status - -1 for failure, size of *compressed* (yes!) name otherwise (X version only)
  521.  *
  522.  * Returns:       R0 (non-X version only)
  523.  *
  524.  * Other notes:   Calls SWI 0x46020.
  525.  */
  526.  
  527. extern os_error *xdnsresolver_dn_expand (char const *msg,
  528.       char const *eomsg,
  529.       char const *comp_dn,
  530.       char *exp_dn,
  531.       int length,
  532.       int *status);
  533. extern int dnsresolver_dn_expand (char const *msg,
  534.       char const *eomsg,
  535.       char const *comp_dn,
  536.       char *exp_dn,
  537.       int length);
  538.  
  539. /* ------------------------------------------------------------------------
  540.  * Function:      dnsresolver_get_host_name()
  541.  *
  542.  * Description:   Finds out the primary hostname of the machine
  543.  *
  544.  * Input:         buffer - to hold the hostname on exit
  545.  *                size - of the buffer in R0
  546.  *
  547.  * Output:        status - -1 for failure, 0 for success (X version only)
  548.  *
  549.  * Returns:       R0 (non-X version only)
  550.  *
  551.  * Other notes:   Calls SWI 0x46021.
  552.  */
  553.  
  554. extern os_error *xdnsresolver_get_host_name (char *buffer,
  555.       int size,
  556.       int *status);
  557. extern int dnsresolver_get_host_name (char *buffer,
  558.       int size);
  559.  
  560. /* ------------------------------------------------------------------------
  561.  * Function:      dnsresolver_res_query()
  562.  *
  563.  * Description:   Perform a complete DNS query. Interface as for
  564.  *                res_query()
  565.  *
  566.  * Input:         address - Pointer to entity to lookup
  567.  *                address_class - as for SWI DNSResolver_StartQuery
  568.  *                lookup_type - as for SWI DNSResolver_StartQuery
  569.  *                ansbuf - buffer for answer
  570.  *                size - size of the ansbuf buffer
  571.  *
  572.  * Output:        length - Size of the response (X version only)
  573.  *
  574.  * Returns:       R0 (non-X version only)
  575.  *
  576.  * Other notes:   Calls SWI 0x46022.
  577.  */
  578.  
  579. extern os_error *xdnsresolver_res_query (char const *address,
  580.       int address_class,
  581.       int lookup_type,
  582.       char *ansbuf,
  583.       int size,
  584.       int *length);
  585. extern int dnsresolver_res_query (char const *address,
  586.       int address_class,
  587.       int lookup_type,
  588.       char *ansbuf,
  589.       int size);
  590.  
  591. /* ------------------------------------------------------------------------
  592.  * Function:      dnsresolver_name_servers()
  593.  *
  594.  * Description:   Find out what nameservers are currently being used. This
  595.  *                information should be treated as READ-ONLY, although you
  596.  *                could (if careful) change these if you know what you are
  597.  *                doing
  598.  *
  599.  * Output:        size - Number of entries in the array of structures (X version only)
  600.  *                ns_address_list - Address of first address structure
  601.  *
  602.  * Returns:       R0 (non-X version only)
  603.  *
  604.  * Other notes:   Calls SWI 0x46023.
  605.  */
  606.  
  607. extern os_error *xdnsresolver_name_servers (int *size,
  608.       sockaddr_in **ns_address_list);
  609. extern int dnsresolver_name_servers (sockaddr_in **ns_address_list);
  610.  
  611. /* ------------------------------------------------------------------------
  612.  * Function:      dnsresolver_cache_flush()
  613.  *
  614.  * Description:   Flush everything from the DNS resolver cache
  615.  *
  616.  * Other notes:   Calls SWI 0x46024.
  617.  */
  618.  
  619. extern os_error *xdnsresolver_cache_flush (void);
  620. extern void dnsresolver_cache_flush (void);
  621.  
  622. /* ------------------------------------------------------------------------
  623.  * Function:      dnsresolver_get_error()
  624.  *
  625.  * Description:   Retrieve the DNS error status of a lookup. For details of
  626.  *                these codes, see <arpa/nameser.h>
  627.  *
  628.  * Input:         query - DNS query handle
  629.  *
  630.  * Output:        err - Error code associated with the lookup (X version only)
  631.  *
  632.  * Returns:       R0 (non-X version only)
  633.  *
  634.  * Other notes:   Calls SWI 0x46025.
  635.  */
  636.  
  637. extern os_error *xdnsresolver_get_error (dnsquery *query,
  638.       int *err);
  639. extern int dnsresolver_get_error (dnsquery *query);
  640.  
  641. #ifdef __cplusplus
  642.    }
  643. #endif
  644.  
  645. #endif
  646.